namespace Yuebon.Security.IServices
{
    /// <summary>
    /// 定义发票信息服务接口
    /// </summary>
    public partial interface ITHInvoiceService:IService<THInvoice,THInvoiceOutputDto>
    {
        // <summary>
        /// 根据条件查询数据库,并返回对象集合(用于分页数据显示)
        /// </summary>
        /// <param name="search">查询的条件</param>
        /// <returns>指定对象的集合</returns>
        Task<PageResult<THInvoiceOutputDto>> SearchPageList(InvoiceQueryModel search);
        /// <summary>
        /// 扫描发票
        /// </summary>
        /// <param name="invoice"></param>
        /// <returns></returns>
        Task<InvoiceScanOutDto> ScanInvoiceNo(string invoice);
        /// <summary>
        /// 通过发票号查询发票
        /// </summary>
        /// <param name="invoiceNo"></param>
        /// <returns></returns>

        Task<List<THInvoice>> SearchInvoiceList(string invoiceNo);


        /// <summary>
        /// 导入核验发票
        /// </summary>
        /// <param name="invoice"></param>
        /// <returns></returns>
        Task<List<InvoiceScanOutDto>> ImportInvoices(string filePath);
        /// <summary>
        /// 去除已核发票
        /// </summary>
        /// <param name="invoices"></param>
        /// <returns></returns>

        Task<List<InvoiceScanOutDto>> FilterInvoice(List<InvoiceScanOutDto> invoices);
        /// <summary>
        /// 批量审核发票
        /// </summary>
        /// <param name="invoices"></param>
        /// <returns></returns>

        Task<List<InvoiceScanOutDto>> BatchInvoice(List<InvoiceScanOutDto> invoices);

        Task<string> ExportInvoice(InvoiceQueryModel search,string path);
    }
}
